/*
    功能列表
    1，全选功能
        选中所有行，汇总价格
    2，单选功能
        选中或取消选中一行
    3，数量加减按钮
        增减商品数量，计算小计价格
    4，删除按钮
        移除当前行，重新计算总计价格
    5，删除被选中的商品
*/

// 获取所有加减按钮(得到的是一个数组)
var add = document.querySelectorAll(".plus");
var reduce = document.querySelectorAll(".minus");
// 获取所有文本框
var inputs = document.querySelectorAll(".form-control");
// 获取所有行
var rows = document.querySelectorAll(".trow");
// 获取所有删除按钮
var btn_dels = document.querySelectorAll(".del");

setTotal();

// 给所有的加减按钮绑定点击事件
for (var i = 0; i < add.length; i++) {
    add[i].onclick = function () {
        // 获取对应的父节点
        var amount = this.parentNode.parentNode;
        // 获取文本框
        var input = amount.querySelector(".form-control");
        // 获取文本框中的数量
        var num = input.value;
        num++;
        // 修改文本框的值
        input.value = num;

        // 计算小计
        // 获取当前行
        var tr = amount.parentNode.parentNode;
        // 获取商品单价
        var unit = tr.querySelector(".singlePrice");
        var price = unit.innerHTML;
        if (price == "概念产品") {
            smallTotal = "概念产品";
        } else if (price == "价格面议") {
            smallTotal = "价格面议";
        } else {
            // 重新计算小计价格
            smallTotal = num * price;
            // 保留两位小数
            smallTotal = smallTotal.toFixed(2);

            // 将计算好的小计价格设置给金额
            var u_price = tr.querySelector(".link-addPrice");
            u_price.innerHTML = smallTotal;
        }

        // 计算总计
        setTotal();
    }
}

for (var i = 0; i < reduce.length; i++) {
    reduce[i].onclick = function () {

        // 获取对应的父节点
        var amount = this.parentNode.parentNode;
        // 获取文本框
        var input = amount.querySelector(".form-control");
        // 获取文本框中的数量
        var num = input.value;
        if (num > 1) {
            num--;
        }
        // 修改文本框的值
        input.value = num;

        // 计算小计
        // 获取当前行
        var tr = amount.parentNode.parentNode;
        // 获取商品单价
        var unit = tr.querySelector(".singlePrice");
        var price = unit.innerHTML;
        if (price == "概念产品") {
            smallTotal = "概念产品";
        } else if (price == "价格面议") {
            smallTotal = "价格面议";
        } else {
            // 重新计算小计价格
            smallTotal = num * price;
            // 保留两位小数
            smallTotal = smallTotal.toFixed(2);

            // 将计算好的小计价格设置给金额
            var u_price = tr.querySelector(".link-addPrice");
            u_price.innerHTML = smallTotal;
        }

        setTotal();
    }
}

// 用户手动修改文本框中的商品数量
for (var i = 0; i < inputs.length; i++) {
    // 给每个文本框绑定 失焦 事件
    inputs[i].onblur = function () {
        // 防止出现负数
        if (this.value < 1) {
            this.value = 1;
        }
        // 防止输入小数或其它字符
        this.value = parseInt(this.value);

        // 计算小计
        // 获取当前行
        var tr = this.parentNode.parentNode.parentNode;
        // 获取商品单价
        var unit = tr.querySelector(".singlePrice");
        var price = unit.innerHTML;
        // 重新计算小计价格
        smallTotal = this.value * price;
        // 保留两位小数
        smallTotal = smallTotal.toFixed(2);

        // 将计算好的小计价格设置给金额
        var u_price = tr.querySelector(".link-addPrice");
        u_price.innerHTML = smallTotal;

        setTotal();
    }
}

// 计算总计价格 & 计算选中的商品总数 & 同时判断是否全选
function setTotal() {
    var total = 0;  // 商品总价
    // 重新获取行
    rows = document.querySelectorAll(".trow");
    // 遍历所有行
    for (var i = 0; i < rows.length; i++) {
        // 获取小计价格（得到的是字符串，不是数字，需要转化）
        var smallTotal = rows[i].querySelector(".link-addPrice").innerHTML;
        // 把小计价格转化为数字
        if (smallTotal == "概念产品") {
            smallTotal = 0;
        } else if (smallTotal == "价格面议") {
            smallTotal = 0;
        } else {
            smallTotal = Number(smallTotal);
            total += smallTotal;
        }

    }

    // 把总计放在它应在的位置
    var totalPrice = document.querySelector(".totalPrice");
    totalPrice.innerHTML = total.toFixed(2);
}


// 删除当前行
for (var i = 0; i < btn_dels.length; i++) {
    btn_dels[i].onclick = function () {
        var tr = this.parentNode.parentNode.parentNode;
        var th = tr.querySelector("th");
        switch (th.innerHTML) {
            case 'CPU':
                window.open('/chooseCPU/', '_blank');
                console.log(th);
                break;
            case '主板':
                window.open('/chooseMboard/', '_blank');
                console.log(th);
                break;
            case '显卡':
                window.open('/chooseGPU/', '_blank');
                console.log(th);
                break;
            case '运行内存':
                window.open('/chooseRAM/', '_blank');
                console.log(th);
                break;
            case '机械硬盘':
                window.open('/chooseHDD/', '_blank');
                console.log(th);
                break;
            case '固态硬盘':
                window.open('/chooseSSD/', '_blank');
                console.log(th);
                break;
            case '电源':
                window.open('/choosePower/', '_blank');
                console.log(th);
                break;
            case '机箱':
                window.open('/chooseChassis/', '_blank');
                console.log(th);
                break;
            case '显示器':
                window.open('/chooseDisplay/', '_blank');
                console.log(th);
                break;


        }
        var tds = tr.querySelectorAll("td");
        for (var i = 0; i < tds.length - 1; i++)
            tr.removeChild(tds[i]);
        setTotal();
        j++;
    }
}

